//
//  RSStatusTotalViewModel.swift
//  RSWeibo
//
//  Created by Macx on 16/8/12.
//  Copyright © 2016年 Macx. All rights reserved.
//

import UIKit

class RSStatusTotalViewModel: NSObject {
    
    // 保存微博的数组
     var statusTotalArr: [RSStatusViewModel] = [RSStatusViewModel]()

    // 加载数据的方法
    func loadStatus(isPullup: Bool, isSuccessClosur:(isSuccess:Bool)->()){
        // 取出需要的参数
        let access_token = RSUserAccoutViewModel.sharedUserAccountViewModel.userAccountModel!.access_token
        
        // 设置默认值
        var max_id: Int64 = 0
        var since_id: Int64 = 0

        // 判断是 上拉 或者 下拉 然后再给 参数赋值
        if isPullup {
            // 下拉加载
            max_id = statusTotalArr.last?.statusModel?.id ?? 0
            
            // 为了避免重复, 需要减掉1
            if max_id > 0{
            
                max_id = max_id - 1
            }
        }else{
        
            // 不是上拉加载, 那就是下拉刷新, 取出所需的参数进行复制
            since_id = statusTotalArr.first?.statusModel?.id ?? 0
        }
        

        RSNetTool.sharedTool.getstatuses_friends_timeline(access_token!, maxId: max_id, sinceId: since_id) { (reseponse, error) in

            if error != nil{

                print("网络请求失败了\(error)")

            }
            // 执行到这里, 说明error不为nil, 也就是网络请求是有数据的

            //判断服务器给的字典是不是正确的
            guard let dict = reseponse as? [String : AnyObject] else{

                print("服务器返回的字典样式不正确")
                return
            }

            // 代码走到这里, 说明返回的字典类型也没粗
            //                        print(dict)
            // 字典转模型, 注意 [[String : AnyObject]] 多了一层[] 表示的装着字典的数组
            guard let dictArr = dict["statuses"] as? [[String : AnyObject]] else{

                print("取不到相应的微博字典")
                return
            }
            var tempArr = [RSStatusViewModel]()

            // 遍历
            for obj in dictArr {
                // 字典转模型
                let statusesModel = RSStatusesModel(dict: obj)

                let statusViewModel = RSStatusViewModel(statusModel: statusesModel)
                
                // 添加到临时可变数组中
                tempArr.append(statusViewModel)
                
            }
            // 设置数据
//            self.statusTotalArr = tempArr
           
            if isPullup{
                 // 判断, 如果是上拉加载的, 则拼接进数组
                self.statusTotalArr.appendContentsOf(tempArr)
            }else{
                // 如果是下拉刷新, 则插入到数组的最前面
                self.statusTotalArr.insertContentsOf(tempArr, at: 0)
            }
            
            isSuccessClosur(isSuccess: true)
    
        }
    }
    

    
    
    

}
